package com.bestvike.stone.spring.shiro.authz;

import com.bestvike.stone.spring.shiro.auth.Auth;

/**
 * 授权器
 */
public interface Authorizer {
    /**
     * 根据上下文令牌从缓存取回授权
     */
    Auth fetch();

    /**
     * 每次授权验证时,再次校验令牌有效性
     */
    boolean isAuthenticated();

    /**
     * 判断当前上下文是否有指定的全部权限
     *
     * @param permissions 指定的权限
     * @return 有返回 true, 否则返回 false
     */
    boolean hasAllPermission(String... permissions);

    /**
     * 判断当前上下文是否有指定的任一权限
     *
     * @param permissions 指定的权限
     * @return 有返回 true, 否则返回 false
     */
    boolean hasAnyPermission(String... permissions);

    /**
     * 判断当前上下文是否有指定的全部角色
     *
     * @param roles 指定的角色
     * @return 有返回 true, 否则返回 false
     */
    boolean hasAllRole(String... roles);

    /**
     * 判断当前上下文是否有指定的任一角色
     *
     * @param roles 指定的角色
     * @return 有返回 true, 否则返回 false
     */
    boolean hasAnyRole(String... roles);
}
